#include <iostream>
#include <fstream>

using namespace std;

class CStudent
{
public:
    // char szName[20];
    string szName;
    int age;
};

int main()
{
    CStudent s;
    ofstream outFile("students.dat", ios::out | ios::binary);
    while (cin >> s.szName >> s.age)
        outFile.write((char *)&s, sizeof(s)); //write函数 写入二进制文件
    //将 s 对象写入文件。s 的地址就是要写入文件的内存缓冲区的地址。但是 &s 不是 char * 类型，因此要进行强制类型转换。
    outFile.close();

    ifstream inFile("students.dat", ios::in | ios::binary); //二进制读方式打开
    if (!inFile)
    {
        cout << "error" << endl;
        return 0;
    }

    while (inFile.read((char *)&s, sizeof(s)))
    {                                      //一直读到文件结束
        int readedBytes = inFile.gcount(); //看刚才读了多少字节
        cout<<readedBytes<<endl;
        cout << s.szName << " " << s.age << endl;
    }
    inFile.close();
    
    return 0;
}

